package warpper;

/**
 * 包装类
 * java为8个基本类型定义了对应的8个包装类
 * 目的是让基本类型可以以"对象"的形式存在，来方便的参与到面向对象的开发中
 *
 * 基本类型             包装类
 * byte             java.lang.Byte
 * short            java.lang.Short
 * int              java.lang.Integer
 * long             java.lang.Long
 * float            java.lang.Float
 * double           java.lang.Double
 * char             java.lang.Character
 * boolean          java.lang.Boolean
 *
 */
public class IntegerDemo1 {
    public static void main(String[] args) {
//        int a = 123;
        int a = 128;
//        Integer i1 = new Integer(a);
//        Integer i2 = new Integer(a);
        //Integer的valueOf总是重用1字节之内(-128-127)的整数对象
        Integer i1 = Integer.valueOf(a);
        Integer i2 = Integer.valueOf(a);
        System.out.println(i1);
        System.out.println(i2);

        System.out.println(i1==i2);
        System.out.println(i1.equals(i2));

        //Double的valueOf没有做任何特殊处理，内部就是new
        double d = 123.123;
        Double d1 = Double.valueOf(d);
        Double d2 = Double.valueOf(d);
        System.out.println(d1==d2);
        System.out.println(d1.equals(d2));

        //数字类型的包装类可以将其转换为任意数字的基本类型
        int i = i1.intValue();
        System.out.println(i);
        byte b = i1.byteValue();//大类型转换为小类型可能存在溢出
        System.out.println(b);
        double dou = i1.doubleValue();
        System.out.println(dou);

    }
}
